In developing software, it is typical that errors or “bugs” in the code will be discovered. Hopefully, the errors are discovered during software testing before the software is released to avoid user frustration or the need to create and apply patches, fixes, or corrected versions. Software testing may involve simulated user or multi-user interaction with the software being developed, during which the software is a script of test data is applied to the software to simulate actual use and, hopefully, identify errors in the software.
Some errors prove easier to diagnose than others. For example, if a particular type of error arises at the same point in executing the test data, isolating the cause of the error may prove relatively easy. In other words, if the same error arises in executing the same instruction or group of instructions at the same point in the test, then one can infer that execution of the software to this point has resulted in some particular condition that the instruction or group of instructions will result in the error.
On the other hand, errors that result in intermittent failures are more difficult to detect, let alone isolate and correct. Intermittent failures, by definition, do not occur each time the same instruction or group of instructions executes. When the error arises, the test that resulted in the error may be rerun, but this time, the error does not arise. Nonetheless, the error may continue to arise from time to time, yet in such a sporadic fashion that makes it difficult to even quantify the instances of the failure. As a result, it may prove much more difficult to correct the error when it is difficult to identify and isolate the conditions that, intermittently, cause the failure to manifest.